package guet.imagan.util;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * 列表操作相关的工具类
 */
public class ListUtil {

	/**
	 * 将数组转换为列表
	 */
	public static <T> List<T> array2List(T[] arr) {
		List<T> result = new ArrayList<>(Arrays.asList(arr));

		return result;
	}

	/**
	 * 把一个字符串集合中首次出现的字符串用另一个字符串代替
	 * @param targetLst 待操作的目标字符串集合
	 * @param oldStr 旧字符串
	 * @param newStr 用来代替就字符串的新字符串
	 */
	public static void replaceFirst(List<String>targetLst, String oldStr,String newStr){
		if(oldStr==null||oldStr.length()==0)
			return;
		if(newStr==null||oldStr.length()==0){
			return;
		}
		for(int k=0;k<targetLst.size();k++){
			String s = targetLst.get(k);
			if(oldStr.equals(s)){
				targetLst.remove(k);
				targetLst.add(k,newStr);
				break;
			}
		}
	}

	/**
	 * 把一个字符串集合中首次出现的字符串用另一个子列表代替
	 * @param targetLst 目标字符串列表
	 * @param oldStr 待查找的旧字符串
	 * @param newLst 待替换的子字符串列表
	 */
	public static void replaceFirst(List<String>targetLst,String oldStr,
	                                List<String>newLst){
		for(int k=0;k<targetLst.size();k++){
			String s = targetLst.get(k);
			if(oldStr.equals(s)){
				targetLst.remove(k);
				targetLst.addAll(k,newLst);
				break;
			}
		}
	}

	/**
	 * 判断一个列表中是否有元素包含某个子字符串
	 */
	public static boolean elementsContains(List<String> content, String subStr) {
		for(String s:content){
			if(content.contains(subStr))
				return true;
		}
		return false;
	}

	/**
	 * 把字符串列表转换为独立的字符串
	 * @param list 字符串列表
	 * @return
	 */
	public static String list2Str(List<String> list) {
		StringBuilder sb = new StringBuilder();
		list.forEach(item->sb.append(item+"\n"));
		return sb.toString();
	}
}
